home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / xfs / xfs_fs.h < prev    next >
C/C++ Source or Header  |  2005-10-18  |  19KB  |  528 lines

  1. /*
  2.  * Copyright (c) 1995-2003 Silicon Graphics, Inc.  All Rights Reserved.
  3.  *
  4.  * This program is free software; you can redistribute it and/or modify it
  5.  * under the terms of version 2.1 of the GNU Lesser General Public License
  6.  * as published by the Free Software Foundation.
  7.  *
  8.  * This program is distributed in the hope that it would be useful, but
  9.  * WITHOUT ANY WARRANTY; without even the implied warranty of
  10.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  11.  *
  12.  * Further, this software is distributed without any warranty that it is
  13.  * free of the rightful claim of any third person regarding infringement
  14.  * or the like.     Any license provided herein, whether implied or
  15.  * otherwise, applies only to this software file.  Patent licenses, if
  16.  * any, provided herein do not apply to combinations of this program with
  17.  * other software, or any other product whatsoever.
  18.  *
  19.  * You should have received a copy of the GNU Lesser General Public
  20.  * License along with this program; if not, write the Free Software
  21.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
  22.  * USA.
  23.  *
  24.  * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
  25.  * Mountain View, CA  94043, or:
  26.  *
  27.  * http://www.sgi.com
  28.  *
  29.  * For further information regarding this notice, see:
  30.  *
  31.  * http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/
  32.  */
  33. #ifndef __XFS_FS_H__
  34. #define __XFS_FS_H__
  35.  
  36. /*
  37.  * SGI's XFS filesystem's major stuff (constants, structures)
  38.  */
  39.  
  40. #define XFS_NAME    "xfs"
  41.  
  42. /*
  43.  * Direct I/O attribute record used with XFS_IOC_DIOINFO
  44.  * d_miniosz is the min xfer size, xfer size multiple and file seek offset
  45.  * alignment.
  46.  */
  47. #ifndef HAVE_DIOATTR
  48. struct dioattr {
  49.     __u32        d_mem;        /* data buffer memory alignment */
  50.     __u32        d_miniosz;    /* min xfer size        */
  51.     __u32        d_maxiosz;    /* max xfer size        */
  52. };
  53. #endif
  54.  
  55. /*
  56.  * Structure for XFS_IOC_FSGETXATTR[A] and XFS_IOC_FSSETXATTR.
  57.  */
  58. #ifndef HAVE_FSXATTR
  59. struct fsxattr {
  60.     __u32        fsx_xflags;    /* xflags field value (get/set) */
  61.     __u32        fsx_extsize;    /* extsize field value (get/set)*/
  62.     __u32        fsx_nextents;    /* nextents field value (get)    */
  63.     unsigned char    fsx_pad[16];
  64. };
  65. #endif
  66.  
  67. /*
  68.  * Flags for the bs_xflags/fsx_xflags field
  69.  * There should be a one-to-one correspondence between these flags and the
  70.  * XFS_DIFLAG_s.
  71.  */
  72. #define XFS_XFLAG_REALTIME    0x00000001    /* data in realtime volume */
  73. #define XFS_XFLAG_PREALLOC    0x00000002    /* preallocated file extents */
  74. #define XFS_XFLAG_IMMUTABLE    0x00000008    /* file cannot be modified */
  75. #define XFS_XFLAG_APPEND    0x00000010    /* all writes append */
  76. #define XFS_XFLAG_SYNC        0x00000020    /* all writes synchronous */
  77. #define XFS_XFLAG_NOATIME    0x00000040    /* do not update access time */
  78. #define XFS_XFLAG_NODUMP    0x00000080    /* do not include in backups */
  79. #define XFS_XFLAG_RTINHERIT    0x00000100    /* create with rt bit set */
  80. #define XFS_XFLAG_PROJINHERIT    0x00000200    /* create with parents projid */
  81. #define XFS_XFLAG_NOSYMLINKS    0x00000400    /* disallow symlink creation */
  82. #define XFS_XFLAG_HASATTR    0x80000000    /* no DIFLAG for this    */
  83.  
  84. /*
  85.  * Structure for XFS_IOC_GETBMAP.
  86.  * On input, fill in bmv_offset and bmv_length of the first structure
  87.  * to indicate the area of interest in the file, and bmv_entry with the
  88.  * number of array elements given.  The first structure is updated on
  89.  * return to give the offset and length for the next call.
  90.  */
  91. #ifndef HAVE_GETBMAP
  92. struct getbmap {
  93.     __s64        bmv_offset;    /* file offset of segment in blocks */
  94.     __s64        bmv_block;    /* starting block (64-bit daddr_t)  */
  95.     __s64        bmv_length;    /* length of segment, blocks        */
  96.     __s32        bmv_count;    /* # of entries in array incl. 1st  */
  97.     __s32        bmv_entries;    /* # of entries filled in (output)  */
  98. };
  99. #endif
  100.  
  101. /*
  102.  *    Structure for XFS_IOC_GETBMAPX.     Fields bmv_offset through bmv_entries
  103.  *    are used exactly as in the getbmap structure.  The getbmapx structure
  104.  *    has additional bmv_iflags and bmv_oflags fields. The bmv_iflags field
  105.  *    is only used for the first structure.  It contains input flags
  106.  *    specifying XFS_IOC_GETBMAPX actions.  The bmv_oflags field is filled
  107.  *    in by the XFS_IOC_GETBMAPX command for each returned structure after
  108.  *    the first.
  109.  */
  110. #ifndef HAVE_GETBMAPX
  111. struct getbmapx {
  112.     __s64        bmv_offset;    /* file offset of segment in blocks */
  113.     __s64        bmv_block;    /* starting block (64-bit daddr_t)  */
  114.     __s64        bmv_length;    /* length of segment, blocks        */
  115.     __s32        bmv_count;    /* # of entries in array incl. 1st  */
  116.     __s32        bmv_entries;    /* # of entries filled in (output). */
  117.     __s32        bmv_iflags;    /* input flags (1st structure)        */
  118.     __s32        bmv_oflags;    /* output flags (after 1st structure)*/
  119.     __s32        bmv_unused1;    /* future use                */
  120.     __s32        bmv_unused2;    /* future use                */
  121. };
  122. #endif
  123.  
  124. /*    bmv_iflags values - set by XFS_IOC_GETBMAPX caller.    */
  125. #define BMV_IF_ATTRFORK        0x1    /* return attr fork rather than data */
  126. #define BMV_IF_NO_DMAPI_READ    0x2    /* Do not generate DMAPI read event  */
  127. #define BMV_IF_PREALLOC        0x4    /* rtn status BMV_OF_PREALLOC if req */
  128. #define BMV_IF_VALID    (BMV_IF_ATTRFORK|BMV_IF_NO_DMAPI_READ|BMV_IF_PREALLOC)
  129. #ifdef __KERNEL__
  130. #define BMV_IF_EXTENDED 0x40000000    /* getpmapx if set */
  131. #endif
  132.  
  133. /*    bmv_oflags values - returned for for each non-header segment */
  134. #define BMV_OF_PREALLOC        0x1    /* segment = unwritten pre-allocation */
  135.  
  136. /*    Convert getbmap <-> getbmapx - move fields from p1 to p2. */
  137. #define GETBMAP_CONVERT(p1,p2) {    \
  138.     p2.bmv_offset = p1.bmv_offset;    \
  139.     p2.bmv_block = p1.bmv_block;    \
  140.     p2.bmv_length = p1.bmv_length;    \
  141.     p2.bmv_count = p1.bmv_count;    \
  142.     p2.bmv_entries = p1.bmv_entries;  }
  143.  
  144.  
  145. /*
  146.  * Structure for XFS_IOC_FSSETDM.
  147.  * For use by backup and restore programs to set the XFS on-disk inode
  148.  * fields di_dmevmask and di_dmstate.  These must be set to exactly and
  149.  * only values previously obtained via xfs_bulkstat!  (Specifically the
  150.  * xfs_bstat_t fields bs_dmevmask and bs_dmstate.)
  151.  */
  152. #ifndef HAVE_FSDMIDATA
  153. struct fsdmidata {
  154.     __u32        fsd_dmevmask;    /* corresponds to di_dmevmask */
  155.     __u16        fsd_padding;
  156.     __u16        fsd_dmstate;    /* corresponds to di_dmstate  */
  157. };
  158. #endif
  159.  
  160. /*
  161.  * File segment locking set data type for 64 bit access.
  162.  * Also used for all the RESV/FREE interfaces.
  163.  */
  164. typedef struct xfs_flock64 {
  165.     __s16        l_type;
  166.     __s16        l_whence;
  167.     __s64        l_start;
  168.     __s64        l_len;        /* len == 0 means until end of file */
  169.     __s32        l_sysid;
  170.     __u32        l_pid;
  171.     __s32        l_pad[4];    /* reserve area                */
  172. } xfs_flock64_t;
  173.  
  174. /*
  175.  * Output for XFS_IOC_FSGEOMETRY_V1
  176.  */
  177. typedef struct xfs_fsop_geom_v1 {
  178.     __u32        blocksize;    /* filesystem (data) block size */
  179.     __u32        rtextsize;    /* realtime extent size        */
  180.     __u32        agblocks;    /* fsblocks in an AG        */
  181.     __u32        agcount;    /* number of allocation groups    */
  182.     __u32        logblocks;    /* fsblocks in the log        */
  183.     __u32        sectsize;    /* (data) sector size, bytes    */
  184.     __u32        inodesize;    /* inode size in bytes        */
  185.     __u32        imaxpct;    /* max allowed inode space(%)    */
  186.     __u64        datablocks;    /* fsblocks in data subvolume    */
  187.     __u64        rtblocks;    /* fsblocks in realtime subvol    */
  188.     __u64        rtextents;    /* rt extents in realtime subvol*/
  189.     __u64        logstart;    /* starting fsblock of the log    */
  190.     unsigned char    uuid[16];    /* unique id of the filesystem    */
  191.     __u32        sunit;        /* stripe unit, fsblocks    */
  192.     __u32        swidth;        /* stripe width, fsblocks    */
  193.     __s32        version;    /* structure version        */
  194.     __u32        flags;        /* superblock version flags    */
  195.     __u32        logsectsize;    /* log sector size, bytes    */
  196.     __u32        rtsectsize;    /* realtime sector size, bytes    */
  197.     __u32        dirblocksize;    /* directory block size, bytes    */
  198. } xfs_fsop_geom_v1_t;
  199.  
  200. /*
  201.  * Output for XFS_IOC_FSGEOMETRY
  202.  */
  203. typedef struct xfs_fsop_geom {
  204.     __u32        blocksize;    /* filesystem (data) block size */
  205.     __u32        rtextsize;    /* realtime extent size        */
  206.     __u32        agblocks;    /* fsblocks in an AG        */
  207.     __u32        agcount;    /* number of allocation groups    */
  208.     __u32        logblocks;    /* fsblocks in the log        */
  209.     __u32        sectsize;    /* (data) sector size, bytes    */
  210.     __u32        inodesize;    /* inode size in bytes        */
  211.     __u32        imaxpct;    /* max allowed inode space(%)    */
  212.     __u64        datablocks;    /* fsblocks in data subvolume    */
  213.     __u64        rtblocks;    /* fsblocks in realtime subvol    */
  214.     __u64        rtextents;    /* rt extents in realtime subvol*/
  215.     __u64        logstart;    /* starting fsblock of the log    */
  216.     unsigned char    uuid[16];    /* unique id of the filesystem    */
  217.     __u32        sunit;        /* stripe unit, fsblocks    */
  218.     __u32        swidth;        /* stripe width, fsblocks    */
  219.     __s32        version;    /* structure version        */
  220.     __u32        flags;        /* superblock version flags    */
  221.     __u32        logsectsize;    /* log sector size, bytes    */
  222.     __u32        rtsectsize;    /* realtime sector size, bytes    */
  223.     __u32        dirblocksize;    /* directory block size, bytes    */
  224.     __u32        logsunit;    /* log stripe unit, bytes */
  225. } xfs_fsop_geom_t;
  226.  
  227. /* Output for XFS_FS_COUNTS */
  228. typedef struct xfs_fsop_counts {
  229.     __u64    freedata;    /* free data section blocks */
  230.     __u64    freertx;    /* free rt extents */
  231.     __u64    freeino;    /* free inodes */
  232.     __u64    allocino;    /* total allocated inodes */
  233. } xfs_fsop_counts_t;
  234.  
  235. /* Input/Output for XFS_GET_RESBLKS and XFS_SET_RESBLKS */
  236. typedef struct xfs_fsop_resblks {
  237.     __u64  resblks;
  238.     __u64  resblks_avail;
  239. } xfs_fsop_resblks_t;
  240.  
  241. #define XFS_FSOP_GEOM_VERSION    0
  242.  
  243. #define XFS_FSOP_GEOM_FLAGS_ATTR    0x0001    /* attributes in use    */
  244. #define XFS_FSOP_GEOM_FLAGS_NLINK    0x0002    /* 32-bit nlink values    */
  245. #define XFS_FSOP_GEOM_FLAGS_QUOTA    0x0004    /* quotas enabled    */
  246. #define XFS_FSOP_GEOM_FLAGS_IALIGN    0x0008    /* inode alignment    */
  247. #define XFS_FSOP_GEOM_FLAGS_DALIGN    0x0010    /* large data alignment */
  248. #define XFS_FSOP_GEOM_FLAGS_SHARED    0x0020    /* read-only shared    */
  249. #define XFS_FSOP_GEOM_FLAGS_EXTFLG    0x0040    /* special extent flag    */
  250. #define XFS_FSOP_GEOM_FLAGS_DIRV2    0x0080    /* directory version 2    */
  251. #define XFS_FSOP_GEOM_FLAGS_LOGV2    0x0100    /* log format version 2    */
  252. #define XFS_FSOP_GEOM_FLAGS_SECTOR    0x0200    /* sector sizes >1BB    */
  253.  
  254.  
  255. /*
  256.  * Minimum and maximum sizes need for growth checks
  257.  */
  258. #define XFS_MIN_AG_BLOCKS    64
  259. #define XFS_MIN_LOG_BLOCKS    512
  260. #define XFS_MAX_LOG_BLOCKS    (64 * 1024)
  261. #define XFS_MIN_LOG_BYTES    (256 * 1024)
  262. #define XFS_MAX_LOG_BYTES    (128 * 1024 * 1024)
  263.  
  264. /*
  265.  * Structures for XFS_IOC_FSGROWFSDATA, XFS_IOC_FSGROWFSLOG & XFS_IOC_FSGROWFSRT
  266.  */
  267. typedef struct xfs_growfs_data {
  268.     __u64        newblocks;    /* new data subvol size, fsblocks */
  269.     __u32        imaxpct;    /* new inode space percentage limit */
  270. } xfs_growfs_data_t;
  271.  
  272. typedef struct xfs_growfs_log {
  273.     __u32        newblocks;    /* new log size, fsblocks */
  274.     __u32        isint;        /* 1 if new log is internal */
  275. } xfs_growfs_log_t;
  276.  
  277. typedef struct xfs_growfs_rt {
  278.     __u64        newblocks;    /* new realtime size, fsblocks */
  279.     __u32        extsize;    /* new realtime extent size, fsblocks */
  280. } xfs_growfs_rt_t;
  281.  
  282.  
  283. /*
  284.  * Structures returned from ioctl XFS_IOC_FSBULKSTAT & XFS_IOC_FSBULKSTAT_SINGLE
  285.  */
  286. typedef struct xfs_bstime {
  287.     time_t        tv_sec;        /* seconds        */
  288.     __s32        tv_nsec;    /* and nanoseconds    */
  289. } xfs_bstime_t;
  290.  
  291. typedef struct xfs_bstat {
  292.     __u64        bs_ino;        /* inode number            */
  293.     __u16        bs_mode;    /* type and mode        */
  294.     __u16        bs_nlink;    /* number of links        */
  295.     __u32        bs_uid;        /* user id            */
  296.     __u32        bs_gid;        /* group id            */
  297.     __u32        bs_rdev;    /* device value            */
  298.     __s32        bs_blksize;    /* block size            */
  299.     __s64        bs_size;    /* file size            */
  300.     xfs_bstime_t    bs_atime;    /* access time            */
  301.     xfs_bstime_t    bs_mtime;    /* modify time            */
  302.     xfs_bstime_t    bs_ctime;    /* inode change time        */
  303.     int64_t        bs_blocks;    /* number of blocks        */
  304.     __u32        bs_xflags;    /* extended flags        */
  305.     __s32        bs_extsize;    /* extent size            */
  306.     __s32        bs_extents;    /* number of extents        */
  307.     __u32        bs_gen;        /* generation count        */
  308.     __u16        bs_projid;    /* project id            */
  309.     unsigned char    bs_pad[14];    /* pad space, unused        */
  310.     __u32        bs_dmevmask;    /* DMIG event mask        */
  311.     __u16        bs_dmstate;    /* DMIG state info        */
  312.     __u16        bs_aextents;    /* attribute number of extents    */
  313. } xfs_bstat_t;
  314.  
  315. /*
  316.  * The user-level BulkStat Request interface structure.
  317.  */
  318. typedef struct xfs_fsop_bulkreq {
  319.     __u64        __user *lastip;    /* last inode # pointer        */
  320.     __s32        icount;        /* count of entries in buffer    */
  321.     void        __user *ubuffer;/* user buffer for inode desc.    */
  322.     __s32        __user *ocount;    /* output count pointer        */
  323. } xfs_fsop_bulkreq_t;
  324.  
  325.  
  326. /*
  327.  * Structures returned from xfs_inumbers routine (XFS_IOC_FSINUMBERS).
  328.  */
  329. typedef struct xfs_inogrp {
  330.     __u64        xi_startino;    /* starting inode number    */
  331.     __s32        xi_alloccount;    /* # bits set in allocmask    */
  332.     __u64        xi_allocmask;    /* mask of allocated inodes    */
  333. } xfs_inogrp_t;
  334.  
  335.  
  336. /*
  337.  * Error injection.
  338.  */
  339. typedef struct xfs_error_injection {
  340.     __s32        fd;
  341.     __s32        errtag;
  342. } xfs_error_injection_t;
  343.  
  344.  
  345. /*
  346.  * The user-level Handle Request interface structure.
  347.  */
  348. typedef struct xfs_fsop_handlereq {
  349.     __u32        fd;        /* fd for FD_TO_HANDLE        */
  350.     void        __user *path;    /* user pathname        */
  351.     __u32        oflags;        /* open flags            */
  352.     void        __user *ihandle;/* user supplied handle        */
  353.     __u32        ihandlen;    /* user supplied length        */
  354.     void        __user *ohandle;/* user buffer for handle    */
  355.     __u32        __user *ohandlen;/* user buffer length        */
  356. } xfs_fsop_handlereq_t;
  357.  
  358. /*
  359.  * Compound structures for passing args through Handle Request interfaces
  360.  * xfs_fssetdm_by_handle, xfs_attrlist_by_handle, xfs_attrmulti_by_handle
  361.  * - ioctls: XFS_IOC_FSSETDM_BY_HANDLE, XFS_IOC_ATTRLIST_BY_HANDLE, and
  362.  *         XFS_IOC_ATTRMULTI_BY_HANDLE
  363.  */
  364.  
  365. typedef struct xfs_fsop_setdm_handlereq {
  366.     struct xfs_fsop_handlereq    hreq;    /* handle information    */
  367.     struct fsdmidata        __user *data;    /* DMAPI data    */
  368. } xfs_fsop_setdm_handlereq_t;
  369.  
  370. typedef struct xfs_attrlist_cursor {
  371.     __u32        opaque[4];
  372. } xfs_attrlist_cursor_t;
  373.  
  374. typedef struct xfs_fsop_attrlist_handlereq {
  375.     struct xfs_fsop_handlereq    hreq; /* handle interface structure */
  376.     struct xfs_attrlist_cursor    pos; /* opaque cookie, list offset */
  377.     __u32                flags;    /* which namespace to use */
  378.     __u32                buflen;    /* length of buffer supplied */
  379.     void                __user *buffer;    /* returned names */
  380. } xfs_fsop_attrlist_handlereq_t;
  381.  
  382. typedef struct xfs_attr_multiop {
  383.     __u32        am_opcode;
  384.     __s32        am_error;
  385.     void        __user *am_attrname;
  386.     void        __user *am_attrvalue;
  387.     __u32        am_length;
  388.     __u32        am_flags;
  389. } xfs_attr_multiop_t;
  390.  
  391. typedef struct xfs_fsop_attrmulti_handlereq {
  392.     struct xfs_fsop_handlereq    hreq; /* handle interface structure */
  393.     __u32                opcount;/* count of following multiop */
  394.     struct xfs_attr_multiop        __user *ops; /* attr_multi data */
  395. } xfs_fsop_attrmulti_handlereq_t;
  396.  
  397. /*
  398.  * per machine unique filesystem identifier types.
  399.  */
  400. typedef struct { __u32 val[2]; } xfs_fsid_t; /* file system id type */
  401.  
  402.  
  403. #ifndef HAVE_FID
  404. #define MAXFIDSZ    46
  405.  
  406. typedef struct fid {
  407.     __u16        fid_len;        /* length of data in bytes */
  408.     unsigned char    fid_data[MAXFIDSZ];    /* data (fid_len worth)  */
  409. } fid_t;
  410. #endif
  411.  
  412. typedef struct xfs_fid {
  413.     __u16    xfs_fid_len;        /* length of remainder    */
  414.     __u16    xfs_fid_pad;
  415.     __u32    xfs_fid_gen;        /* generation number    */
  416.     __u64    xfs_fid_ino;        /* 64 bits inode number */
  417. } xfs_fid_t;
  418.  
  419. typedef struct xfs_fid2 {
  420.     __u16    fid_len;    /* length of remainder */
  421.     __u16    fid_pad;    /* padding, must be zero */
  422.     __u32    fid_gen;    /* generation number */
  423.     __u64    fid_ino;    /* inode number */
  424. } xfs_fid2_t;
  425.  
  426. typedef struct xfs_handle {
  427.     union {
  428.         __s64        align;    /* force alignment of ha_fid     */
  429.         xfs_fsid_t  _ha_fsid;    /* unique file system identifier */
  430.     } ha_u;
  431.     xfs_fid_t    ha_fid;        /* file system specific file ID     */
  432. } xfs_handle_t;
  433. #define ha_fsid ha_u._ha_fsid
  434.  
  435. #define XFS_HSIZE(handle)    (((char *) &(handle).ha_fid.xfs_fid_pad     \
  436.                  - (char *) &(handle))              \
  437.                  + (handle).ha_fid.xfs_fid_len)
  438.  
  439. #define XFS_HANDLE_CMP(h1, h2)    memcmp(h1, h2, sizeof(xfs_handle_t))
  440.  
  441. #define FSHSIZE        sizeof(fsid_t)
  442.  
  443. /* 
  444.  * Flags for going down operation
  445.  */
  446. #define XFS_FSOP_GOING_FLAGS_DEFAULT        0x0    /* going down */
  447. #define XFS_FSOP_GOING_FLAGS_LOGFLUSH        0x1    /* flush log but not data */
  448. #define XFS_FSOP_GOING_FLAGS_NOLOGFLUSH        0x2    /* don't flush log nor data */
  449.  
  450. /*
  451.  * ioctl commands that are used by Linux filesystems
  452.  */
  453. #define XFS_IOC_GETXFLAGS    _IOR('f', 1, long)
  454. #define XFS_IOC_SETXFLAGS    _IOW('f', 2, long)
  455. #define XFS_IOC_GETVERSION    _IOR('v', 1, long)
  456.  
  457. /*
  458.  * ioctl commands that replace IRIX fcntl()'s
  459.  * For 'documentation' purposed more than anything else,
  460.  * the "cmd #" field reflects the IRIX fcntl number.
  461.  */
  462. #define XFS_IOC_ALLOCSP        _IOW ('X', 10, struct xfs_flock64)
  463. #define XFS_IOC_FREESP        _IOW ('X', 11, struct xfs_flock64)
  464. #define XFS_IOC_DIOINFO        _IOR ('X', 30, struct dioattr)
  465. #define XFS_IOC_FSGETXATTR    _IOR ('X', 31, struct fsxattr)
  466. #define XFS_IOC_FSSETXATTR    _IOW ('X', 32, struct fsxattr)
  467. #define XFS_IOC_ALLOCSP64    _IOW ('X', 36, struct xfs_flock64)
  468. #define XFS_IOC_FREESP64    _IOW ('X', 37, struct xfs_flock64)
  469. #define XFS_IOC_GETBMAP        _IOWR('X', 38, struct getbmap)
  470. #define XFS_IOC_FSSETDM        _IOW ('X', 39, struct fsdmidata)
  471. #define XFS_IOC_RESVSP        _IOW ('X', 40, struct xfs_flock64)
  472. #define XFS_IOC_UNRESVSP    _IOW ('X', 41, struct xfs_flock64)
  473. #define XFS_IOC_RESVSP64    _IOW ('X', 42, struct xfs_flock64)
  474. #define XFS_IOC_UNRESVSP64    _IOW ('X', 43, struct xfs_flock64)
  475. #define XFS_IOC_GETBMAPA    _IOWR('X', 44, struct getbmap)
  476. #define XFS_IOC_FSGETXATTRA    _IOR ('X', 45, struct fsxattr)
  477. /*    XFS_IOC_SETBIOSIZE ---- deprecated 46       */
  478. /*    XFS_IOC_GETBIOSIZE ---- deprecated 47       */
  479. #define XFS_IOC_GETBMAPX    _IOWR('X', 56, struct getbmap)
  480.  
  481. /*
  482.  * ioctl commands that replace IRIX syssgi()'s
  483.  */
  484. #define XFS_IOC_FSGEOMETRY_V1         _IOR ('X', 100, struct xfs_fsop_geom_v1)
  485. #define XFS_IOC_FSBULKSTAT         _IOWR('X', 101, struct xfs_fsop_bulkreq)
  486. #define XFS_IOC_FSBULKSTAT_SINGLE    _IOWR('X', 102, struct xfs_fsop_bulkreq)
  487. #define XFS_IOC_FSINUMBERS         _IOWR('X', 103, struct xfs_fsop_bulkreq)
  488. #define XFS_IOC_PATH_TO_FSHANDLE     _IOWR('X', 104, struct xfs_fsop_handlereq)
  489. #define XFS_IOC_PATH_TO_HANDLE         _IOWR('X', 105, struct xfs_fsop_handlereq)
  490. #define XFS_IOC_FD_TO_HANDLE         _IOWR('X', 106, struct xfs_fsop_handlereq)
  491. #define XFS_IOC_OPEN_BY_HANDLE         _IOWR('X', 107, struct xfs_fsop_handlereq)
  492. #define XFS_IOC_READLINK_BY_HANDLE   _IOWR('X', 108, struct xfs_fsop_handlereq)
  493. #define XFS_IOC_SWAPEXT             _IOWR('X', 109, struct xfs_swapext)
  494. #define XFS_IOC_FSGROWFSDATA         _IOW ('X', 110, struct xfs_growfs_data)
  495. #define XFS_IOC_FSGROWFSLOG         _IOW ('X', 111, struct xfs_growfs_log)
  496. #define XFS_IOC_FSGROWFSRT         _IOW ('X', 112, struct xfs_growfs_rt)
  497. #define XFS_IOC_FSCOUNTS         _IOR ('X', 113, struct xfs_fsop_counts)
  498. #define XFS_IOC_SET_RESBLKS         _IOWR('X', 114, struct xfs_fsop_resblks)
  499. #define XFS_IOC_GET_RESBLKS         _IOR ('X', 115, struct xfs_fsop_resblks)
  500. #define XFS_IOC_ERROR_INJECTION         _IOW ('X', 116, struct xfs_error_injection)
  501. #define XFS_IOC_ERROR_CLEARALL         _IOW ('X', 117, struct xfs_error_injection)
  502. /*    XFS_IOC_ATTRCTL_BY_HANDLE -- deprecated 118     */
  503. #define XFS_IOC_FREEZE             _IOWR('X', 119, int)
  504. #define XFS_IOC_THAW             _IOWR('X', 120, int)
  505. #define XFS_IOC_FSSETDM_BY_HANDLE    _IOW ('X', 121, struct xfs_fsop_setdm_handlereq)
  506. #define XFS_IOC_ATTRLIST_BY_HANDLE   _IOW ('X', 122, struct xfs_fsop_attrlist_handlereq)
  507. #define XFS_IOC_ATTRMULTI_BY_HANDLE  _IOW ('X', 123, struct xfs_fsop_attrmulti_handlereq)
  508. #define XFS_IOC_FSGEOMETRY         _IOR ('X', 124, struct xfs_fsop_geom)
  509. #define XFS_IOC_GOINGDOWN         _IOR ('X', 125, __uint32_t)
  510. /*    XFS_IOC_GETFSUUID ---------- deprecated 140     */
  511.  
  512.  
  513. #ifndef HAVE_BBMACROS
  514. /*
  515.  * Block I/O parameterization.    A basic block (BB) is the lowest size of
  516.  * filesystem allocation, and must equal 512.  Length units given to bio
  517.  * routines are in BB's.
  518.  */
  519. #define BBSHIFT        9
  520. #define BBSIZE        (1<<BBSHIFT)
  521. #define BBMASK        (BBSIZE-1)
  522. #define BTOBB(bytes)    (((__u64)(bytes) + BBSIZE - 1) >> BBSHIFT)
  523. #define BTOBBT(bytes)    ((__u64)(bytes) >> BBSHIFT)
  524. #define BBTOB(bbs)    ((bbs) << BBSHIFT)
  525. #endif
  526.  
  527. #endif    /* __XFS_FS_H__ */
  528.